package com.payment.system.mapper;

import com.payment.system.domain.PlanNew;
import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * 新计划 数据层
 * 
 * @author payment
 * @date 2019-07-02
 */
public interface PlanNewMapper {
	/**
	 * 查询新计划信息
	 * 
	 * @param id
	 *            新计划ID
	 * @return 新计划信息
	 */
	public PlanNew selectPlanNewById(String id);

	/**
	 * 查询新计划列表
	 * 
	 * @param planNew
	 *            新计划信息
	 * @return 新计划集合
	 */
	public List<PlanNew> selectPlanNewList(PlanNew planNew);

	/**
	 * 新增新计划
	 * 
	 * @param planNew
	 *            新计划信息
	 * @return 结果
	 */
	public int insertPlanNew(PlanNew planNew);

	/**
	 * 修改新计划
	 * 
	 * @param planNew
	 *            新计划信息
	 * @return 结果
	 */
	public int updatePlanNew(PlanNew planNew);

	/**
	 * 删除新计划
	 * 
	 * @param id
	 *            新计划ID
	 * @return 结果
	 */
	public int deletePlanNewById(String id);

	/**
	 * 批量删除新计划
	 * 
	 * @param ids
	 *            需要删除的数据ID
	 * @return 结果
	 */
	public int deletePlanNewByIds(String[] ids);

	/**
	 * 查询是否有未执行，执行中，失败的计划
	 * 
	 * @param cardNumber
	 *            信用卡卡号
	 * @return
	 */
	public List<PlanNew> selectBadDebt(@Param("cardNumber") String cardNumber);

	/**
	 * 查询是否有遗留订单(不包括要启用的计划)
	 * 
	 * @param cardNumber
	 * @param id
	 * @return
	 */
	List<PlanNew> selectByCardA(@Param("cardNumber") String cardNumber, @Param("id") String id);

	/**
	 * 查询App计划列表
	 * 
	 * @param cardNumber
	 *            卡号
	 * @param pageIndex
	 * @param pageSize
	 * @param type
	 * @return
	 */
	public List<PlanNew> selectPlanListByCardNumberLimit(@Param("cardNumber") String cardNumber,
			@Param("pageIndex") int pageIndex, @Param("pageSize") Integer pageSize, @Param("type") Integer type);

	/**
	 * 查询是否有遗留计划
	 * 
	 * @param merchantId
	 *            用户ID
	 * @param cardNumber
	 *            卡号
	 * @return
	 */
	public int selectPlanByCardNumberAndMerchantId(@Param("merchantId") String merchantId,
			@Param("cardNumber") String cardNumber);

}